package com.sojson.project.controller.param.verify;

import com.sojson.enums.core.EMenuContentType;
import com.sojson.enums.core.EMenuIsCache;
import com.sojson.enums.core.EMenuIsFrame;
import com.sojson.enums.core.EMenuVisible;
import com.sojson.project.entity.po.MenuUccnBottom;
import com.sojson.result.Result;
import com.sojson.util.StringUtil;

/**
 * 首页底部菜单表控制器参数验证
 * 
 * @author liu
 * @date 2021-03-16
 */
public class MenuUccnBottomParamVerify {

    /**
     * 单条插入
     * 
     * @param dto
     * @return
     */
    public static Result<Integer> insert(MenuUccnBottom dto) {
        if (StringUtil.isBlank(dto.getName())) {
            return Result.fail("菜单名称不能为空！");
        }
        if (StringUtil.isBlank(dto.getType())) {
            return Result.fail("菜单类型不能为空！");
        }
        Integer isFrame = dto.getIsFrame();
        if (StringUtil.isBlank(isFrame)) {
            dto.setIsFrame(EMenuIsFrame.NO.getCode());
            isFrame = dto.getIsFrame();
        }
        int code = EMenuContentType.URL.getCode();
        if (StringUtil.isBlank(dto.getContentType())) {
            dto.setContentType(code);
        }
        if (isFrame == EMenuIsFrame.NO.getCode()) {
            Integer contentType = dto.getContentType();
            if (contentType != code) {
                if (StringUtil.isBlank(dto.getComponent())) {
                    return Result.fail("路由ID不能为空！");
                }
            }
        }
        if (StringUtil.isBlank(dto.getParentId())) {
            dto.setParentId("0");
        }
        if (StringUtil.isBlank(dto.getSortNum())) {
            dto.setSortNum(100);
        }
        if (StringUtil.isBlank(dto.getPath())) {
            dto.setPath("#");
        }
        if (StringUtil.isBlank(dto.getIsCache())) {
            dto.setIsCache(EMenuIsCache.YES.getCode());
        }
        if (StringUtil.isBlank(dto.getVisible())) {
            dto.setVisible(EMenuVisible.YES.getCode());
        }
        if (StringUtil.isBlank(dto.getIcon())) {
            dto.setIcon("#");
        }

        return Result.success();
    }

    /**
     * 通过id更新(局部更新)
     * 
     * @param dto
     * @return
     */
    public static Result<Integer> updatePartialById(MenuUccnBottom dto) {
        if (StringUtil.isBlank(dto.getId())) {
            return Result.fail("ID不能为空！");
        }
        if (dto.getId().equals(dto.getParentId())) {
            return Result.fail("上级菜单不能选择自己！");
        }

        return Result.success();
    }

}